define(['jquery','mage/translate','Magento_Catalog/js/product/view/product-ids-resolver','Magento_Catalog/js/product/view/product-info-resolver','Magento_Customer/js/customer-data','Magento_Ui/js/modal/confirm','jquery-ui-modules/widget','mage/validation'],function($,$t,idsResolver,productInfoResolver,customerData,confirm){'use strict';return function(widget){$.widget('mage.catalogAddToCart',widget,{options:{processPre:'catalogAddToCartPrepareFormSubmit'},submitForm:function(form){if(this.options.useQuantity){if(!this.checkIsConfigurable()){if(this.element.validation().valid()){if(!this.itemInCart||!this.options.updateQuantity){$('body').trigger(this.options.processPre,form);this.ajaxSubmit(form);}else{$('body').trigger(this.options.processPre,form);this.ajaxSubmit(form,true);}}}else{if(this.options.updateQuantity){$('body').trigger(this.options.processPre,form);this.ajaxSubmit(form);}else{if(this.element.validation().valid()){$('body').trigger(this.options.processPre,form);this.ajaxSubmit(form);}}}}else{$('body').trigger(this.options.processPre,form);this.ajaxSubmit(form);}},ajaxSubmit:function(form){let self=this,productIds=idsResolver(form),productInfo=self.options.productInfoResolver(form),formData,newQty,url=form.prop('action');formData=new FormData(form[0]);newQty=parseFloat(formData.get('qty'));$(self.options.minicartSelector).trigger('contentLoading');this.disableQtyInput(form);if(this.cart&&!isNaN(newQty)){if(this.itemInCart){url=window.checkout.updateItemQtyUrl;if(this.itemInCart?.qty==newQty){$(form).find('[name="qty"]').focus();return;} formData.set('item_id',this.itemInCart.item_id);formData.set('item_qty',newQty);}else{if(!newQty){if(this.element.find('[name="qty"]').data('min-allowed')){newQty=this.element.find('[name="qty"]').data('min-allowed');}else{newQty=1;}} this.element.find('[name="qty"]').val(newQty);formData.set('qty',newQty);}} self.disableAddToCartButton(form,newQty);$.ajax({url:url,data:formData,type:'post',dataType:'json',cache:false,contentType:false,processData:false,beforeSend:function(){if(self.isLoaderEnabled()){$('body').trigger(self.options.processStart);}},success:function(res){var eventData,parameters;$(document).trigger('ajax:addToCart',{'sku':form.data().productSku,'productIds':productIds,'productInfo':productInfo,'form':form,'response':res});if(self.isLoaderEnabled()){$('body').trigger(self.options.processStop);} if(res.backUrl){eventData={'form':form,'redirectParameters':[]};$('body').trigger('catalogCategoryAddToCartRedirect',eventData);if(eventData.redirectParameters.length>0&&window.location.href.split(/[?#]/)[0]===res.backUrl){parameters=res.backUrl.split('#');parameters.push(eventData.redirectParameters.join('&'));res.backUrl=parameters.join('#');} self._redirect(res.backUrl);return;} if(res.messages){$(self.options.messagesSelector).html(res.messages);} if(!res.success&&res.error_message){confirm({title:$t('Attention'),content:$t(res.error_message),parentModalClass:'_has-qty-modal',buttons:[{text:$.mage.__('Aceptar'),class:'action-primary action-accept',click:function(event){this.closeModal(event,true);}}]})} if(isNaN(newQty)&&self.options.useQuantity){return;} if(res.minicart){$(self.options.minicartSelector).replaceWith(res.minicart);$(self.options.minicartSelector).trigger('contentUpdated');} if(res.product&&res.product.statusText){$(self.options.productStatusSelector).removeClass('available').addClass('unavailable').find('span').html(res.product.statusText);} if(self.cart){self.enableButtonsOnCartUpdate=true;self.showUpdateQtyActions(!!newQty,newQty)}else{self.enableAddToCartButton(form);}},error:function(res){$(document).trigger('ajax:addToCart:error',{'sku':form.data().productSku,'productIds':productIds,'productInfo':productInfo,'form':form,'response':res});},complete:function(res){if(res.state()==='rejected'){location.reload();}}});},ajaxSubmitUpdate:function(form){var self=this,productIds=idsResolver(form),productInfo=self.options.productInfoResolver(form),formData;$(self.options.minicartSelector).trigger('contentLoading');self.disableAddToCartButton(form);formData=new FormData(form[0]);if(!formData.get('qty')){return;} if(this.itemInCart.qty==formData.get('qty')){$(form).find('[name="qty"]').focus();return;} formData.set('item_id',this.itemInCart.item_id);formData.set('item_qty',formData.get('qty'));this.disableQtyInput(form);$.ajax({url:window.checkout.updateItemQtyUrl,data:formData,type:'post',dataType:'json',cache:false,contentType:false,processData:false,beforeSend:function(){if(self.isLoaderEnabled()){$('body').trigger(self.options.processStart);}},success:function(res){var eventData,parameters;$(document).trigger('ajax:addToCart',{'sku':form.data().productSku,'productIds':productIds,'productInfo':productInfo,'form':form,'response':res});if(self.isLoaderEnabled()){$('body').trigger(self.options.processStop);} if(res.backUrl){eventData={'form':form,'redirectParameters':[]};$('body').trigger('catalogCategoryAddToCartRedirect',eventData);if(eventData.redirectParameters.length>0&&window.location.href.split(/[?#]/)[0]===res.backUrl){parameters=res.backUrl.split('#');parameters.push(eventData.redirectParameters.join('&'));res.backUrl=parameters.join('#');} self._redirect(res.backUrl);return;} if(res.messages){$(self.options.messagesSelector).html(res.messages);} if(!res.success&&res.error_message){confirm({title:$t('Attention'),content:$t(res.error_message),parentModalClass:'_has-qty-modal',buttons:[{text:$.mage.__('Aceptar'),class:'action-primary action-accept',click:function(event){this.closeModal(event,true);}}]})} if(res.minicart){$(self.options.minicartSelector).replaceWith(res.minicart);$(self.options.minicartSelector).trigger('contentUpdated');} if(res.product&&res.product.statusText){$(self.options.productStatusSelector).removeClass('available').addClass('unavailable').find('span').html(res.product.statusText);} self.enableAddToCartButton(form);},error:function(res){$(document).trigger('ajax:addToCart:error',{'sku':form.data().productSku,'productIds':productIds,'productInfo':productInfo,'form':form,'response':res});},complete:function(res){if(res.state()==='rejected'){location.reload();}}});},});return $.mage.catalogAddToCart;};});